#include "SDL_Jeu.h"
#include <stdlib.h>
#include <SDL_ttf.h>
#include <string.h> 

void InitialisationSdlJeu (sdljeu * sj)
{
	(*sj).jeu = (Jeu*) malloc (sizeof (Jeu));
	InitialisationJeu ((*sj).jeu);
	(*sj).image = (Image*) malloc (sizeof (Image));
	InitialisationImage ((*sj).image);
}
void DestructionSdlJeu (sdljeu * sj)
{
	DestructionJeu ((*sj).jeu);
	free ((*sj).jeu);
	DestructionImage ((*sj).image);
	free ((*sj).image);
}
void BoucleSdlJeu (sdljeu * sj)
{
	
	int continuer = 1;
	int xcurseur= 200;
	float xsouris = 0;
	float ysouris = 0;
	int compteur = 0;
	int selectionmaison = 0;
	int ycurseur=200;
	int choix;
	int xpopup;
	int ypopup;
	int action;
	int temps = -1;
	int tempsprecedent = -1;
	int grosseurpopup;
	SDL_Surface * ressourcebois = NULL;
    SDL_Surface * ressourcenourriture = NULL;
    SDL_Surface * nomlunite = NULL;
    SDL_Surface * vielunite = NULL;
    SDL_Surface * deplacementlunite = NULL;
    SDL_Surface * equipelunite = NULL;
    SDL_Surface * utilise = NULL;
    SDL_Surface * joueur = NULL;
    SDL_Surface * typedecor = NULL;
    SDL_Surface * groupedecor = NULL;
    SDL_Surface * prixmaison = NULL;
	SDL_Surface * ecran = NULL;
	SDL_Surface * cotee = SDL_CreateRGBSurface(SDL_HWSURFACE, 200, 500,32,0,0,0,0);
	SDL_Color couleurNoire = {0, 0, 0};
	char rb[100];
	SDL_Init (SDL_INIT_VIDEO);
	TTF_Init();
	ecran = SDL_SetVideoMode (1000,500,32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
	choix = MenuPrincipal(sj,ecran);
	if (choix != 2)
	{
	SDL_Event event;
	SDL_Event eventnull;
	TTF_Font *police = NULL;
	TTF_Font *police2 = NULL;
	TTF_Font *policemenu = NULL;
	TTF_Font *policemenu2 = NULL;
    police = TTF_OpenFont("angelina.TTF", 18);
    police2 = TTF_OpenFont("angelina.TTF", 18);
    policemenu = TTF_OpenFont("angelina.TTF", 22);
    policemenu2 = TTF_OpenFont("angelina.TTF", 22);
    TTF_SetFontStyle(police2, TTF_STYLE_BOLD);
    TTF_SetFontStyle(policemenu2, TTF_STYLE_BOLD);
    
	while (choix != 2)
	{
		continuer = 1;
		xcurseur= 200;
		xsouris = 0;
		ysouris = 0;
		selectionmaison = 0;
		ycurseur=200;
		event = eventnull;
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_KEYUP:
				switch(event.key.keysym.sym)
                {
                	case SDLK_RETURN:
						ChangementTour ((*sj).jeu);
						event = eventnull;
                    break;
                    default:
                    
  					break;
                }
            break;
			case SDL_MOUSEBUTTONUP:
				if (selectionmaison == 1)
				{
					AjouterMaisonJeu ((*sj).jeu, selectionmaison, xcurseur/50- (*(*(*sj).jeu).lien_sur_terrain).scrollx , ycurseur/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
				}
				selectionmaison = 0;
				
			break;
			case SDL_MOUSEBUTTONDOWN:
				action = 0;
				if (event.button.x >= 5 && event.button.x < 55 
					&& event.button.y >290 && event.button.y <= 340)  
				{
					selectionmaison = 1;
					action = 1;
				}
				if (event.button.x >= 10 && event.button.x < 190 
					&& event.button.y >=350 && event.button.y <= 390)  
				{
					ChangementTour ((*sj).jeu);
					action = 1;
				}
				if (event.button.x >= 10 && event.button.x < 190 
					&& event.button.y >=400 && event.button.y <= 440)  
				{
					SauvegardeJeu((*sj).jeu, "map/partieencours.txt");
					tempsprecedent = SDL_GetTicks();
					temps = SDL_GetTicks();
					action = 1;
				}
				if (event.button.x >= 10 && event.button.x < 190 
					&& event.button.y >=450 && event.button.y <= 490)  
				{
					continuer = 0;
					action = 1;
				}
				if (action == 0)
				{
					ChoixCasesSdlJeu (sj, ecran, xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx, ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly);
				}
				event = eventnull;
				
			break;
			case SDL_MOUSEMOTION:
				RechercherPositionCurseurSdlJeu  (&xcurseur,&ycurseur,(int)event.motion.x,(int)event.motion.y);
				xsouris = event.motion.x;
				ysouris = event.motion.y;
				if(xsouris > 950)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimx-16)*50+200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 > 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx--;
					}
				}
				if(xsouris >= 200 && xsouris < 250)
				{
					if (200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 < 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx++;
					}
				}
				if(ysouris > 450)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimy-10)*50+(*(*(*sj).jeu).lien_sur_terrain).scrolly*50 > 0)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly--;
					}
				}
				if(ysouris < 50)
				{
					if ((*(*(*sj).jeu).lien_sur_terrain).scrolly*50 < 0)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly++;
					}
				}
			break;
		}
		
		if (continuer == 1)
		{
			continuer = VerificationFinJeu ((*sj).jeu);
		}
		if ((*(*sj).jeu).tour%2 == 0)
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 236, 188, 188));
		}
		else
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 188, 188 , 236));
		}
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		if ((*(*sj).jeu).tour%2 == 0)
		{
			SDL_FillRect(cotee, NULL, SDL_MapRGB(cotee->format, 236, 188, 188));
		}
		else
		{
			SDL_FillRect(cotee, NULL, SDL_MapRGB(cotee->format, 188, 188 , 236));
		}
		AffichageImageSdlJeu (cotee,ecran,0,0);
		if (temps > 0)
		{
			temps = SDL_GetTicks();
			if (temps - tempsprecedent > 2000)
			{
				temps = -1;
			}
			AffichageImageSdlJeu ((*(*sj).image).imgicone[8],ecran,450,440);
		}
		sprintf(rb, "Joueur %d", (*(*sj).jeu).tour%2+1);
   		joueur = TTF_RenderText_Blended(policemenu2, rb, couleurNoire);
		sprintf(rb, "Bois : %d ", (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].bois);
   		ressourcebois = TTF_RenderText_Blended(policemenu, rb, couleurNoire);
   		sprintf(rb, "Nourriture : %d ", (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture);
   		ressourcenourriture = TTF_RenderText_Blended(policemenu, rb, couleurNoire);
   		prixmaison = TTF_RenderText_Blended(policemenu, "100 bois", couleurNoire);
   		nomlunite = TTF_RenderText_Blended(police, "Aucune lunite", couleurNoire);
   		vielunite = TTF_RenderText_Blended(police, " ", couleurNoire);
   		equipelunite = TTF_RenderText_Blended(police, " ", couleurNoire);
   		deplacementlunite = TTF_RenderText_Blended(police, " ", couleurNoire);
   		
   		if (xcurseur/50 >= 0)
   		{
   			if (xcurseur < 400)
   			{
   				xpopup = 900;
   			}
   			else
   			{
   				xpopup = 200;
   			}
   			ypopup = 460;
   			
   			if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 0)
   			{
   				typedecor = TTF_RenderText_Blended(police, "Plaine", couleurNoire);
   				groupedecor = TTF_RenderText_Blended(police, " ", couleurNoire);
   				grosseurpopup = 0;
   			}
   			else if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 1)
   			{
   				typedecor = TTF_RenderText_Blended(police, "Foret", couleurNoire);
   				sprintf(rb, "Vie : %d", (*(*(*sj).jeu).lien_sur_terrain).cases[ycurseur/50 * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50].vie);
   				groupedecor = TTF_RenderText_Blended(police, rb, couleurNoire);
   				grosseurpopup = 1;
   				
   			}
   			else if (((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 2) 
   			|| ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor >= 5 
   			&& (*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor <= 8))
   			{
   				typedecor = TTF_RenderText_Blended(police, "Mer", couleurNoire);
   				groupedecor = TTF_RenderText_Blended(police, " ", couleurNoire);
   				grosseurpopup = 0;
   			}
   			else if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 3 
   			|| (*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 4)
   			{
   				typedecor = TTF_RenderText_Blended(police, "Maison", couleurNoire);
   				if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].groupe_decor == 0)
   				{
   					groupedecor = TTF_RenderText_Blended(police, "equipe 1", couleurNoire);
   				}
   				else
   				{
   					groupedecor = TTF_RenderText_Blended(police, "equipe 2", couleurNoire);
   				}
   				grosseurpopup = 1;
   			}
   			else if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 9)
   			{
   				typedecor = TTF_RenderText_Blended(police, "Caillou", couleurNoire);
   				groupedecor = TTF_RenderText_Blended(police, " ", couleurNoire);
   				grosseurpopup = 0;
   			}
   			if (grosseurpopup == 0)
   			{
   				ypopup = ypopup + 20;
   				AffichageImageSdlJeu ((*(*sj).image).imgicone[6],ecran,xpopup,ypopup);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgicone[5],ecran,xpopup,ypopup);
			}
   			
   			AffichageImageSdlJeu (typedecor,ecran,xpopup+10,ypopup);
			AffichageImageSdlJeu (groupedecor,ecran,xpopup+10,ypopup+20);
   		
   			if ((*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite != NULL)
   			{
   				if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).type == 1)
   				{
   					nomlunite = TTF_RenderText_Blended(police2, "Bucheron", couleurNoire);
   				}
   				else if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).type == 2)
   				{
   					nomlunite = TTF_RenderText_Blended(police2, "Pecheur", couleurNoire);
   				}
   				else if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).type == 3)
   				{
   					nomlunite = TTF_RenderText_Blended(police2, "Soldat", couleurNoire);
   				}
   				else if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).type == 4)
   				{
   					nomlunite = TTF_RenderText_Blended(police2, "Guerrier", couleurNoire);
   				}
   				else if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).type == 	5)
   				{
   					nomlunite = TTF_RenderText_Blended(police2, "Mage", couleurNoire);
   				}
   				
   				sprintf(rb, "Vie : %d", (*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).vie);
   				vielunite = TTF_RenderText_Blended(police, rb, couleurNoire);
   				sprintf(rb, "Joueur %d", (*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).equipe + 1);
   				equipelunite = TTF_RenderText_Blended(police, rb, couleurNoire);
   				sprintf(rb, "Deplacements : %d", (*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).deplacement);
   				deplacementlunite = TTF_RenderText_Blended(police, rb, couleurNoire);
   				if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).utilise == 0)
   				{
   					utilise = TTF_RenderText_Blended(police, "Pas Utilise", couleurNoire);
   				}
   				else
   				{
   					utilise = TTF_RenderText_Blended(police, "Utilise", couleurNoire);
   				}
   				if (xcurseur < 400)
   				{
   					xpopup = xcurseur+50+200;
   				}
   				else
   				{
   					xpopup = xcurseur+50;
   				}
   				if (ycurseur < 250)
   				{
   					ypopup = ycurseur;
   				}
   				else
   				{
   					ypopup = ycurseur-50;
   				}
   				if ((*(*(*(*sj).jeu).lien_sur_terrain).cases[(ycurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrolly) * (*(*(*sj).jeu).lien_sur_terrain).dimx+xcurseur/50-(*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite).equipe == 0)
   				{
   					AffichageImageSdlJeu ((*(*sj).image).imgicone[2],ecran,xpopup,ypopup);
   				}
   				else
   				{
   					AffichageImageSdlJeu ((*(*sj).image).imgicone[3],ecran,xpopup,ypopup);
   				}
   				AffichageImageSdlJeu (nomlunite,ecran,xpopup+10,ypopup);
				AffichageImageSdlJeu (vielunite,ecran,xpopup+10,ypopup+40);
				AffichageImageSdlJeu (equipelunite,ecran,xpopup+10,ypopup+20);
				AffichageImageSdlJeu (deplacementlunite,ecran,xpopup+10,ypopup+60);
				AffichageImageSdlJeu (utilise,ecran,xpopup+10,ypopup+80);
   			}
   			
   			
   		}
   		AffichageImageSdlJeu (joueur,ecran,60,0);
		AffichageImageSdlJeu (ressourcebois,ecran,0,55);
		AffichageImageSdlJeu (ressourcenourriture,ecran,0,90);
		
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[0],ecran,5,290);
		AffichageImageSdlJeu (prixmaison,ecran,70,305);
		AffichageImageSdlJeu ((*(*sj).image).imgicone[1],ecran,10,350);
		AffichageImageSdlJeu ((*(*sj).image).imgicone[4],ecran,10,400);
		AffichageImageSdlJeu ((*(*sj).image).imgicone[7],ecran,10,450);
		if (selectionmaison == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgicone[0],ecran,xsouris-25,ysouris-25);
		}
		AffichageImageSdlJeu ((*(*sj).image).imgcurseur[2], ecran,xcurseur+200, ycurseur);
		SDL_Flip(ecran);
		if ((*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].joueur_ou_IA == 1 && continuer == 1)
		{
			compteur = 100000000;
			
			while(compteur > 0)
			{
				compteur--;
			}
			IntelligenceArtificielle ((*sj).jeu);
  			ChangementTour((*sj).jeu);
		}
	}
	AGagner(sj,ecran);
	InitialisationJoueur(&(*(*sj).jeu).tableau_de_joueurs[0]);
	InitialisationJoueur(&(*(*sj).jeu).tableau_de_joueurs[1]);
	choix = MenuPrincipal(sj,ecran);
	}
	SDL_FreeSurface(ressourcebois);
	SDL_FreeSurface(ressourcenourriture);
	SDL_FreeSurface(nomlunite);
	SDL_FreeSurface(vielunite);
	SDL_FreeSurface(deplacementlunite);
	SDL_FreeSurface(equipelunite);
	SDL_FreeSurface(utilise);
	SDL_FreeSurface(joueur);
	SDL_FreeSurface(typedecor);
	SDL_FreeSurface(groupedecor);
	SDL_FreeSurface(prixmaison);
	SDL_FreeSurface(cotee);
	free(police);
	}
	SDL_Quit();
}
void RechercherPositionCurseurSdlJeu (int * x,int * y,int xsouris,int ysouris)
{
	int i;
	int i2;
	for (i=0;i< 11 ; i++)
	{
		for (i2=0;i2< 16 ; i2++)
		{
			if (xsouris >= i2*50+200 && xsouris < (i2+1)*50+200 
			&& ysouris >= i*50 && ysouris < (i+1)*50)
			{
				*x = i2*50;
				*y = i*50;
				break;
			}
		}
	}
}

void AffichageImageSdlJeu (SDL_Surface * img, SDL_Surface * ecran, int x, int y)
{
	SDL_Rect pos;
	pos.x = (int) x;
	pos.y = (int) y;
	SDL_SetColorKey (img, SDL_SRCCOLORKEY, SDL_MapRGB (img->format,255 ,0,255));
	SDL_SetAlpha(img, SDL_SRCALPHA, 255);
	SDL_BlitSurface(img, NULL, ecran, &pos);
}

void AffichageTerrainSdlJeu (sdljeu * sj,SDL_Surface * ecran,int xspec, int yspec)
{
	const Terrain * t = ObtientTerrainConstJeu ((*sj).jeu);
	const Cases * c;
	SDL_Rect pos;
	int i;
	int j;
	for (i=0; i<(*t).dimy;i++)
	{
		for (j=0; j<(*t).dimx;j++)
		{
			c = ObtientConstCasesTerrain (t,j,i);
			pos.x = j*50+200+(*t).scrollx*50;
			pos.y = i*50+(*t).scrolly*50;
			SDL_SetColorKey ((*(*sj).image).imgdecor[0], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[0]->format,255 ,0,255));
			SDL_BlitSurface((*(*sj).image).imgdecor[0], NULL, ecran, &pos);
		}
	}	
	for (i=0; i<(*t).dimy;i++)
	{
		for (j=0; j<(*t).dimx;j++)
		{
			c = ObtientConstCasesTerrain (t,j,i);
			pos.x = j*50+200+(*t).scrollx*50;
			pos.y = i*50+(*t).scrolly*50;
			
			if (i == yspec && j == xspec)
			{
				if ((*c).type_decor == 4)
				{
					pos.x = pos.x - 15;
					pos.y = pos.y - 15;
					SDL_SetColorKey ((*(*sj).image).imgdecor[(*c).type_decor], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[(*c).type_decor]->format,255 ,0 ,255 ));
					SDL_BlitSurface((*(*sj).image).imgdecor[(*c).type_decor], NULL, ecran, &pos);
				}
				else
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor[0], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[0]->format,255 ,0,255));
					SDL_BlitSurface((*(*sj).image).imgdecor[0], NULL, ecran, &pos);
				}
			}
			else if ((*c).type_decor == 3)
			{
				pos.x = pos.x - 15;
				pos.y = pos.y - 10;
				SDL_SetColorKey ((*(*sj).image).imgdecor[(*c).type_decor], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[(*c).type_decor]->format,255 ,0 ,255 ));
				SDL_BlitSurface((*(*sj).image).imgdecor[(*c).type_decor], NULL, ecran, &pos);
			}
			else if ((*c).type_decor == 4)
			{
				pos.x = pos.x - 15;
				pos.y = pos.y - 15;
				if ((*c).groupe_decor == 0)
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor[19], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[19]->format,255 ,0 ,255 ));
					SDL_BlitSurface((*(*sj).image).imgdecor[19], NULL, ecran, &pos);
				}
				else
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor[20], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[20]->format,255 ,0 ,255 ));
					SDL_BlitSurface((*(*sj).image).imgdecor[20], NULL, ecran, &pos);
				}
			}
			else if ((*c).type_decor == 1)
			{
				pos.x = pos.x;
				pos.y = pos.y - 25;
				if ((*c).vie == 100)
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor[(*c).type_decor], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[(*c).type_decor]->format,255 ,0 ,255 ));
					SDL_BlitSurface((*(*sj).image).imgdecor[(*c).type_decor], NULL, ecran, &pos);
				}
				else
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor[13], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[12]->format,255 ,0 ,255 ));
					SDL_BlitSurface((*(*sj).image).imgdecor[13], NULL, ecran, &pos);
				}
			}
			else if ((*c).type_decor != 0)
			{
				SDL_SetColorKey ((*(*sj).image).imgdecor[(*c).type_decor], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor[(*c).type_decor]->format,255 ,0 ,255 ));
				SDL_BlitSurface((*(*sj).image).imgdecor[(*c).type_decor], NULL, ecran, &pos);
			}
			pos.x = j*50+200+(*t).scrollx*50;
			pos.y = i*50+(*t).scrolly*50;
			if ((*c).lunite != NULL)
			{
				if (i == yspec && j == xspec)
				{
				}
				else if ((*(*c).lunite).equipe == 0)
				{
					if ((*(*c).lunite).utilise == 0)
					{
						SDL_SetColorKey ((*(*sj).image).imgunite[(*(*c).lunite).type-1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgunite[(*(*c).lunite).type-1]->format,255 ,0,255));
						SDL_SetAlpha((*(*sj).image).imgunite[(*(*c).lunite).type-1], SDL_SRCALPHA, 255);
						SDL_BlitSurface((*(*sj).image).imgunite[(*(*c).lunite).type-1], NULL, ecran, &pos);
						
					}
					else
					{
						SDL_SetColorKey ((*(*sj).image).imgunite[(*(*c).lunite).type-1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgunite[(*(*c).lunite).type-1]->format,255 ,0,255));
						SDL_SetAlpha((*(*sj).image).imgunite[(*(*c).lunite).type-1], SDL_SRCALPHA, 128);
						SDL_BlitSurface((*(*sj).image).imgunite[(*(*c).lunite).type-1], NULL, ecran, &pos);
						
					}
				}
				else if ((*(*c).lunite).equipe == 1)
				{
					if ((*(*c).lunite).utilise == 0)
					{
						SDL_SetColorKey ((*(*sj).image).imgunite[(*(*c).lunite).type+4], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgunite[(*(*c).lunite).type+4]->format,255 ,0,255));
						SDL_SetAlpha((*(*sj).image).imgunite[(*(*c).lunite).type+4], SDL_SRCALPHA, 255);
						SDL_BlitSurface((*(*sj).image).imgunite[(*(*c).lunite).type+4], NULL, ecran, &pos);
						
					}
					else
					{
						SDL_SetColorKey ((*(*sj).image).imgunite[(*(*c).lunite).type+4], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgunite[(*(*c).lunite).type+4]->format,255 ,0,255));
						SDL_SetAlpha((*(*sj).image).imgunite[(*(*c).lunite).type+4], SDL_SRCALPHA, 128);
						SDL_BlitSurface((*(*sj).image).imgunite[(*(*c).lunite).type+4], NULL, ecran, &pos);
						
					}
					
				}
			}
		}
	}
}

void ChoixCasesSdlJeu (sdljeu * sj, SDL_Surface * ecran, int x, int y)
{
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	Cases * c = ObtientCasesTerrain (t,x,y);
	if ((*c).lunite != NULL)
	{
		if ((*(*c).lunite).equipe == (*(*sj).jeu).tour%2 && (*(*c).lunite).utilise == 0)
		{
			DeplacementUniteSdlJeu (sj,ecran,x,y);
		}
	}
	else if ((*c).type_decor == 4)
	{
		if ((*c).groupe_decor == (*(*sj).jeu).tour%2)
		{
			UsineSdlJeu (sj,ecran,x,y);
		}
	}
}

void AffichagePossibilite (sdljeu * sj, SDL_Surface * ecran, int * possibilite, int x, int y)
{
	int i;
	int j;
	Terrain * t = (*(*sj).jeu).lien_sur_terrain; 
	SDL_Rect pos;
	for (i= 0; i< (*t).dimy; i++)
	{
		for (j=0; j< (*t).dimx; j++)
		{
			if (possibilite[i*(*t).dimx+j] > 1)
			{
				pos.x = j*50+200+(*t).scrollx*50;
				pos.y = i*50+(*t).scrolly*50;
				SDL_SetColorKey ((*(*sj).image).imgcurseur[0], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgcurseur[0]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgcurseur[0], NULL, ecran, &pos);
			}
			else if (possibilite [i*(*t).dimx+j] == 1 && (*t).cases[i*(*t).dimx+j].type_decor > 0)
			{
				if ((*t).cases[i*(*t).dimx+j].type_decor == 1 && (*(*t).cases[y*(*t).dimx+x].lunite).type == 1)
				{
					pos.x = j*50+200+(*t).scrollx*50;
					pos.y = i*50+(*t).scrolly*50;
					SDL_SetColorKey ((*(*sj).image).imgcurseur[1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgcurseur[1]->format,255 ,0,255));
					SDL_BlitSurface((*(*sj).image).imgcurseur[1], NULL, ecran, &pos);
				}
				if (((*t).cases[i*(*t).dimx+j].type_decor == 2 || ((*t).cases[i*(*t).dimx+j].type_decor >= 5 && (*t).cases[i*(*t).dimx+j].type_decor <= 8)) && (*(*t).cases[y*(*t).dimx+x].lunite).type == 2 )
				{
					pos.x = j*50+200+(*t).scrollx*50;
					pos.y = i*50+(*t).scrolly*50;
					SDL_SetColorKey ((*(*sj).image).imgcurseur[1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgcurseur[1]->format,255 ,0,255));
					SDL_BlitSurface((*(*sj).image).imgcurseur[1], NULL, ecran, &pos);
				}
			}
			else if (possibilite [i*(*t).dimx+j] == 1 && (*t).cases[i*(*t).dimx+j].lunite != NULL &&  ((*(*t).cases[y*(*t).dimx+x].lunite).type == 3||(*(*t).cases[y*(*t).dimx+x].lunite).type == 4||(*(*t).cases[y*(*t).dimx+x].lunite).type == 5))
			{
				pos.x = j*50+200+(*t).scrollx*50;
				pos.y = i*50+(*t).scrolly*50;
				SDL_SetColorKey ((*(*sj).image).imgcurseur[1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgcurseur[1]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgcurseur[1], NULL, ecran, &pos);
			}
		}
	}
}
void DeplacementUniteSdlJeu (sdljeu * sj, SDL_Surface * ecran, int x, int y)
{
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	int max = (*(*t).cases[y*(*t).dimx+x].lunite).deplacement;
	int nbfleche = 0;
	int nbcasedep = 0;
	int mini = 0;
	int cote = 0;
	FlechesDeplacement * fl = (FlechesDeplacement*) malloc (max * sizeof(FlechesDeplacement));
	int * casesdep = (int*) malloc (2 * (max+1) * sizeof (int));
	int xdeplunite = x;
	int ydeplunite = y;
	int continuer = 1;
	int * possibilite = (int*) malloc ((*t).dimx * (*t).dimy * sizeof (int));
	SDL_Event event;
	RecherchePossibiliteDeplacement ((*sj).jeu, possibilite,x, y);
	
	
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
			if (event.motion.x > 200)
			{
				if  (possibilite[(int)(event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+(int)((event.motion.x-200)/50)- (*(*(*sj).jeu).lien_sur_terrain).scrollx] > 0)
				{
					if (! (x == xdeplunite && y == ydeplunite))
					{
						animationDeplacement (sj,ecran, x, y, xdeplunite, ydeplunite,casesdep, nbcasedep);
						DeplacementUniteCases (&(*t).cases[y*(*t).dimx+x],&(*t).cases[ydeplunite*(*t).dimx+xdeplunite]);
					}
					ModifierUtiliseUnite ((*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite, 1);
					if (possibilite[(int)(event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+(int)((event.motion.x-200)/50) - (*(*(*sj).jeu).lien_sur_terrain).scrollx] == 1)
					{
						if ((*t).cases[((int)(event.motion.y/50)- (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+((int)((event.motion.x-200)/50))- (*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 1 && (*(*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite).type == 1)
						{
							animationCoupeArbre (sj,ecran, (int)((event.motion.x-200)/50) - (*(*(*sj).jeu).lien_sur_terrain).scrollx, (int) event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
							ActionUniteCases(&(*t).cases[ydeplunite*(*t).dimx+xdeplunite],&(*t).cases[(int)(event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+(int)((event.motion.x-200)/50)- (*(*(*sj).jeu).lien_sur_terrain).scrollx],1);
							ModificationReserveBois (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],20);
						}
						if (((*t).cases[((int)(event.motion.y/50)- (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+((int)((event.motion.x-200)/50))- (*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor == 2 
						|| ((*t).cases[((int)(event.motion.y/50)- (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+((int)((event.motion.x-200)/50))- (*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor >= 5 
						&& (*t).cases[((int)(event.motion.y/50)- (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+((int)((event.motion.x-200)/50))- (*(*(*sj).jeu).lien_sur_terrain).scrollx].type_decor <= 8))
						&& (*(*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite).type == 2)
						{
							animationPeche (sj,ecran, (int)((event.motion.x-200)/50) - (*(*(*sj).jeu).lien_sur_terrain).scrollx, (int) event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
							ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],40);
						}
						if ((*t).cases[((int)(event.motion.y/50) - (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+((int)((event.motion.x-200)/50))- (*(*(*sj).jeu).lien_sur_terrain).scrollx].lunite != NULL 
						&& ((*(*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite).type == 3||(*(*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite).type == 4||(*(*t).cases[ydeplunite*(*t).dimx+xdeplunite].lunite).type == 5))
						{
							animationCombat(sj,ecran,xdeplunite, ydeplunite, (int)((event.motion.x-200)/50) - (*(*(*sj).jeu).lien_sur_terrain).scrollx, (int) event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
							
						}
					}
				}
				continuer = 0;
			}
			break;
			case SDL_MOUSEMOTION:
				if(event.motion.x > 950)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimx-16)*50+200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 > 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx--;
					}
				}
				if(event.motion.x >= 200 && event.motion.x < 250)
				{
					if (200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 < 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx++;
					}
				}
				if(event.motion.y > 450)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimy-10)*50+200+(*(*(*sj).jeu).lien_sur_terrain).scrolly*50 > 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly--;
					}
				}
				if(event.motion.y < 50)
				{
					if (200+(*(*(*sj).jeu).lien_sur_terrain).scrolly*50 < 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly++;
					}
				}
				if (event.motion.x > 200)
				{
					if (possibilite[(int)(event.motion.y/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly)*(*t).dimx+(int)((event.motion.x-200)/50)-(*(*(*sj).jeu).lien_sur_terrain).scrollx] > 0)
					{
						ydeplunite = (int)(event.motion.y/50)- (*(*(*sj).jeu).lien_sur_terrain).scrolly;
						xdeplunite = (int)((event.motion.x-200)/50)- (*(*(*sj).jeu).lien_sur_terrain).scrollx;
						if (possibilite[ydeplunite*(*t).dimx+xdeplunite] == 1)
                        {	
                            mini = 0;
			
                            if (xdeplunite > 0)
                            {
                                if (possibilite[ydeplunite*(*t).dimx+xdeplunite-1] > possibilite[ydeplunite*(*t).dimx+xdeplunite])
                                {
                                    mini = possibilite[ydeplunite*(*t).dimx+xdeplunite-1];
                                    cote = 3;
                                }
                            }
                            if (xdeplunite < (*t).dimx -1)
                            {
                                if (possibilite[ydeplunite*(*t).dimx+xdeplunite+1] > possibilite[ydeplunite*(*t).dimx+xdeplunite])
                                {
                                    if (mini == 0)
                                    {
                                        mini = possibilite[ydeplunite*(*t).dimx+xdeplunite+1];
                                        cote = 1;
                                    }
                                    else if (mini < possibilite[ydeplunite*(*t).dimx+xdeplunite+1])
                                    {
                                        mini = possibilite[ydeplunite*(*t).dimx+xdeplunite+1];
                                        cote = 1;
                                    }
                                }
                            }
                            if (ydeplunite > 0)
                            {
                                if (possibilite[(ydeplunite-1)*(*t).dimx+xdeplunite] > possibilite[ydeplunite*(*t).dimx+xdeplunite])
                                {
                                    if (mini == 0)
                                    {
                                        mini = possibilite[(ydeplunite-1)*(*t).dimx+xdeplunite];
                                        cote = 2;
                                    }
                                    else if (mini < possibilite[(ydeplunite-1)*(*t).dimx+xdeplunite])
                                    {
                                        mini = possibilite[(ydeplunite-1)*(*t).dimx+xdeplunite];
                                        cote = 2;
                                    }
                                }
                            }
                            if (ydeplunite < (*t).dimy-1)
                            {
                                if (possibilite[(ydeplunite+1)*(*t).dimx+xdeplunite] > possibilite[ydeplunite*(*t).dimx+xdeplunite])
                                {
                                    if (mini == 0)
                                    {
                                        mini = possibilite[(ydeplunite+1)*(*t).dimx+xdeplunite];
                                        cote = 4;
                                    }
                                    else if (mini < possibilite[(ydeplunite+1)*(*t).dimx+xdeplunite])
                                    {
                                        mini = possibilite[(ydeplunite+1)*(*t).dimx+xdeplunite];
                                        cote = 4;
                                    }
                                }
                            }
                                
                            if (cote == 1)
                            {
                                xdeplunite++;
                            }
                            if (cote == 2)
                            {
                                ydeplunite--;
                            }
                            if (cote == 3)
                            {
                                xdeplunite--;
                            }
                            if (cote == 4)
                            {
                                ydeplunite++;
                            }
                        }
						TrajetPossible (fl, possibilite, sj, xdeplunite,ydeplunite, &nbfleche, max, casesdep, &nbcasedep);
					}
				}
			break;
		}
		if (continuer)
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
			AffichageTerrainSdlJeu (sj,ecran,-1,-1);
			AffichagePossibilite (sj, ecran, possibilite,x,y);
			AffichageFleche (sj,fl,nbfleche,ecran);
			SDL_Flip(ecran);
		}
	}
	
}

void TrajetPossible (FlechesDeplacement * fl,int * possibilite, sdljeu * sj, int x, int y, int * nbfleche, int max ,int * casesdep, int * nbcasedep)
{
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	int x2 = x ;
	int y2 = y ;
	int mini;
	int cote;
	
	*nbfleche = 0;
	casesdep[0] = x2;
	casesdep[1] = y2;
	*nbcasedep = 2;
	
	if (possibilite[y2*(*t).dimx+x2] > 0)
	{
		while (possibilite[y2*(*t).dimx+x2] != max+2)
		{
			casesdep[*nbcasedep] = x2;
			casesdep[*nbcasedep+1] = y2;
			*nbcasedep= *nbcasedep+2;
			mini = 0;
			if (x2 > 0)
			{
				if (possibilite[y2*(*t).dimx+x2-1] > possibilite[y2*(*t).dimx+x2])
				{
					mini = possibilite[y2*(*t).dimx+x2-1];
					cote = 3;
				}
			}
			if (x2 < (*t).dimx -1)
			{
				if (possibilite[y2*(*t).dimx+x2+1] > possibilite[y2*(*t).dimx+x2])
				{
					if (mini == 0)
					{
						mini = possibilite[y2*(*t).dimx+x2+1];
						cote = 1;
					}
					else if (mini < possibilite[y2*(*t).dimx+x2+1])
					{
						mini = possibilite[y2*(*t).dimx+x2+1];
						cote = 1;
					}
				}
			}
			if (y2 > 0)
			{
				if (possibilite[(y2-1)*(*t).dimx+x2] > possibilite[y2*(*t).dimx+x2])
				{
					if (mini == 0)
					{
						mini = possibilite[(y2-1)*(*t).dimx+x2];
						cote = 2;
					}
					else if (mini < possibilite[(y2-1)*(*t).dimx+x2])
					{
						mini = possibilite[(y2-1)*(*t).dimx+x2];
						cote = 2;
					}
				}
			}
			if (y2 < (*t).dimy-1)
			{
				if (possibilite[(y2+1)*(*t).dimx+x2] > possibilite[y2*(*t).dimx+x2])
				{
					if (mini == 0)
					{
						mini = possibilite[(y2+1)*(*t).dimx+x2];
						cote = 4;
					}
					else if (mini < possibilite[(y2+1)*(*t).dimx+x2])
					{
						mini = possibilite[(y2+1)*(*t).dimx+x2];
						cote = 4;
					}
				}
			}
			if (cote == 1)
			{
				ajoutfleche (fl,*nbfleche,x2*50+25,y2*50,cote);
				*nbfleche = *nbfleche + 1;
				x2++;
			}
			if (cote == 2)
			{
				ajoutfleche (fl,*nbfleche,x2*50,y2*50-25,cote);
				*nbfleche = *nbfleche + 1;
				y2--;
			}
			if (cote == 3)
			{
				ajoutfleche (fl,*nbfleche,x2*50-25,y2*50,cote);
				*nbfleche = *nbfleche + 1;
				x2--;
			}
			if (cote == 4)
			{
				ajoutfleche (fl,*nbfleche,x2*50,y2*50+25,cote);
				*nbfleche = *nbfleche + 1;
				y2++;
			}
			
		}
	}
	*nbcasedep= *nbcasedep-2;
}

void ajoutfleche (FlechesDeplacement * fl,int nb, int x,int y,int cote)
{
	fl[nb].posx = x;
	fl[nb].posy = y;
	
	if (nb != 0)                               /* si nb!=0 alors on doit mettre des lignes et non des flèches */
	{
		switch(cote)
		{
			case 1 :                   /*direction sur la droite*/
				cote = 5;          /* on met une ligne horizontale */
				break;

			case 2 :                   /* direction vers le haut */
				cote = 6;          /* on met une ligne verticale */
				break;
			
			case 3 :                   /* direction vers la gauche */
				cote = 5;          /* on met une ligne horizontale */
				break;
			
			case 4 :                   /* direction vers le bas */
				cote = 6;          /* on met une ligne verticale */
				break;
		}
	}
	fl[nb].type = cote;
}

void AffichageFleche (sdljeu * sj,FlechesDeplacement * fl,int nbfleche,SDL_Surface * ecran)
{
	int i;
	Terrain * t = (*(*sj).jeu).lien_sur_terrain; 
	SDL_Rect pos;
	for (i=0; i< nbfleche;i++)
	{
		pos.x = fl[i].posx+200+(*t).scrollx*50;
		pos.y = fl[i].posy+(*t).scrolly*50; 
		SDL_SetColorKey ((*(*sj).image).imgfleche[fl[i].type-1], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgfleche[fl[i].type-1]->format,255 ,0,255));
		SDL_BlitSurface((*(*sj).image).imgfleche[fl[i].type-1], NULL, ecran, &pos);
	}
}



void UsineSdlJeu (sdljeu * sj,SDL_Surface * ecran,int x,int y)
{
	int continuer = 1;
	SDL_Event event;
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	Cases * c = ObtientCasesTerrain (t,x,y);
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 405 && event.button.x < 475 && event.button.y >= 125 && event.button.y < 175 && (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture >= 50)
				{
					continuer = 0;
					CreationUniteCases (c,1,(*(*sj).jeu).tour%2 );
					ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],-50);
					ModificationNombreUnites (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],1);
				}
				if (event.button.x >= 350 && event.button.x < 420 && event.button.y >= 295 && event.button.y < 345 && (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture >= 50)
				{
					continuer = 0;
					CreationUniteCases (c,2,(*(*sj).jeu).tour%2);
					ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],-50);
					ModificationNombreUnites (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],1);
				}
				if (event.button.x >= 500 && event.button.x < 570 && event.button.y >= 210 && event.button.y < 260 && (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture >= 100)
				{
					continuer = 0;
					CreationUniteCases (c,3,(*(*sj).jeu).tour%2);
					ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],-100);
					ModificationNombreUnites (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],1);
				}
				if (event.button.x >= 320 && event.button.x < 390 && event.button.y >= 210 && event.button.y < 260 && (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture >= 150)
				{
					continuer = 0;
					CreationUniteCases (c,4,(*(*sj).jeu).tour%2);
					ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],-150);
					ModificationNombreUnites (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],1);
				}
				if (event.button.x >= 475 && event.button.x < 545 && event.button.y >= 295 && event.button.y < 345 && (*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2].nourriture >= 200)
				{
					continuer = 0;
					CreationUniteCases (c,5,(*(*sj).jeu).tour%2);
					ModificationReserveNourriture (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],-200);
					ModificationNombreUnites (&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2],1);
				}
				if (event.button.x >= 745 && event.button.x < 875 && event.button.y >= 345 && event.button.y < 390)
				{
					continuer = 0;
				}
			break;
			case SDL_MOUSEMOTION:
			
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		AffichageImageSdlJeu ((*(*sj).image).imgusine[0],ecran,300,100);
		SDL_Flip(ecran);
	}
}


int MenuPrincipal(sdljeu * sj, SDL_Surface * ecran)
{
	int continuer = 1;
	int choix = 0;
	SDL_Event event;
	SDL_Event eventnull;
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
				choix = 2;
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 270 && event.button.x < 770 
					&& event.button.y >= 120 && event.button.y < 170)  
				{
					choix = MenuPrincipal2(sj, ecran);
					if (choix == 1)
					{
						continuer = 0;
					}
					
				}
				if (event.button.x >= 270 && event.button.x < 770 
					&& event.button.y >=190 && event.button.y < 240)  
				{
					FILE * fic = fopen("map/partieencours.txt","r");
	
					if(fic == NULL)
					{
						fclose(fic);
					}
					else
					{
						fclose(fic);
						ChargementJeu((*sj).jeu, "map/partieencours.txt");
						continuer = 0;
					}
				}
				if (event.button.x >= 270 && event.button.x < 770 
					&& event.button.y >= 260 && event.button.y < 310)  
				{
					choix = MenuOption (sj,ecran);
					if (choix == 1)
					{
						continuer = 0;
					}
				}
				if (event.button.x >= 270 && event.button.x < 770 
					&& event.button.y >= 330  && event.button.y < 380)  
				{
					choix = 2;
					continuer = 0;
				}
				event = eventnull;
				
			break;
			case SDL_MOUSEMOTION:
				
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[0],ecran,0,0);
		SDL_Flip(ecran);
	}
	return choix;
}

int MenuPrincipal2(sdljeu * sj, SDL_Surface * ecran)
{
	int continuer = 1;
	int choix = 0;
	int joueur = 1;
	float xsouris = 0;
	float ysouris = 0;
	int tableaumap[8];
	SDL_Event event;
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	ChargementJeu((*sj).jeu, "map/map1.txt");
	ChargementMapFaite((*sj).jeu,tableaumap,"utilisateur/mapfait.txt");
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >=50 && event.button.y < 100)  
				{
					ChargementJeu((*sj).jeu, "map/map1.txt");
					
				}
				if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 50 && event.button.y < 100)  
				{
					ChargementJeu((*sj).jeu, "map/map2.txt");
					
				}
				if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >= 105 && event.button.y < 155)  
				{
					ChargementJeu((*sj).jeu, "map/map3.txt");
					
				}
				if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 105 && event.button.y < 155)  
				{
					ChargementJeu((*sj).jeu, "map/map4.txt");
					
				}
				if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >= 160 && event.button.y < 210)  
				{
					ChargementJeu((*sj).jeu, "map/map5.txt");
					
				}
				if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 160 && event.button.y < 210)  
				{
					ChargementJeu((*sj).jeu, "map/map6.txt");
					
				}
				if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >= 215 && event.button.y < 265)  
				{
					ChargementJeu((*sj).jeu, "map/map7.txt");
					
				}
				if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 215 && event.button.y < 265)  
				{
					ChargementJeu((*sj).jeu, "map/map8.txt");
					
				}
				
				if (event.button.x >= 465 && event.button.x < 615
					&& event.button.y >= 430 && event.button.y < 500)  
				{
					continuer = 0;
					
				}
				if (event.button.x >= 900 && event.button.x < 1000
					&& event.button.y >= 430 && event.button.y < 500)  
				{
					continuer = 0;
					choix = 1;
					
				}
				
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 323 && event.button.y < 358)  
				{
					joueur = 1;
				}
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 368 && event.button.y < 403)  
				{
					joueur = 2;
				}
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 416 && event.button.y < 451)  
				{
					joueur = 3;
				}
				if (joueur == 1)
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 0;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 0;
				}
				else if (joueur == 2)
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 0;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 1;
				}
				else
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 1;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 1;
				}
				(*t).scrollx = 0;
				(*t).scrolly = 0;
				
			break;
			case SDL_MOUSEMOTION:
				xsouris = event.motion.x;
				ysouris = event.motion.y;
				if(xsouris > 950)
				{
					if (((*t).dimx-16)*40+360+(*t).scrollx*40 > 360)
					{
						(*t).scrollx--;
					}
				}
				if(xsouris >= 360 && xsouris < 410)
				{
					if (360+(*t).scrollx*40 < 360)
					{
						(*t).scrollx++;
					}
				}
				if(ysouris >= 350 && ysouris < 400)
				{
					if (((*t).dimy-10)*40+(*t).scrolly*40 > 0)
					{
						(*t).scrolly--;
					}
				}
				if(ysouris < 50)
				{
					if ((*t).scrolly*40 < 0)
					{
						(*t).scrolly++;
					}
				}
			break;
			break;
		}
		
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu2 (sj,ecran);
		
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[1],ecran,0,0);
		if (tableaumap[0] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,140,30);
		}
		if (tableaumap[1] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,293,30);
		}
		if (tableaumap[2] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,140,87);
		}
		if (tableaumap[3] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,293,87);
		}
		if (tableaumap[4] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,140,143);
		}
		if (tableaumap[5] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,293,143);
		}
		if (tableaumap[6] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,140,198);
		}
		if (tableaumap[7] == 1)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[6],ecran,293,198);
		}
		switch (joueur) 
		{
			case 1 :
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,368);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,416);
			break;

			case 2:
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,368);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,416);	
			break;

			case 3:
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,416);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,368);
			break;
		}
		
		
		SDL_Flip(ecran);
	}
	(*t).scrollx = 0;
	(*t).scrolly = 0;
	return choix;
}

void AffichageTerrainSdlJeu2 (sdljeu * sj,SDL_Surface * ecran)
{
	const Terrain * t = ObtientTerrainConstJeu ((*sj).jeu);
	const Cases * c;
	SDL_Rect pos;
	int i;
	int j;
	for (i=0; i<(*t).dimy;i++)
	{
		for (j=0; j<(*t).dimx;j++)
		{
			c = ObtientConstCasesTerrain (t,j,i);
			pos.x = j*40+360+(*t).scrollx*40;
			pos.y = i*40+1+(*t).scrolly*40;
			if ((*c).type_decor >= 0 && (*c).type_decor <=3)
			{
				SDL_SetColorKey ((*(*sj).image).imgdecor2[(*c).type_decor], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[(*c).type_decor]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgdecor2[(*c).type_decor], NULL, ecran, &pos);
			}
			else if ((*c).type_decor == 4)
			{
				SDL_SetColorKey ((*(*sj).image).imgdecor2[3], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[3]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgdecor2[3], NULL, ecran, &pos);
			}
			else if ((*c).type_decor >= 5 && (*c).type_decor <= 8)
			{
				SDL_SetColorKey ((*(*sj).image).imgdecor2[2], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[2]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgdecor2[2], NULL, ecran, &pos);
			}
			else if ((*c).type_decor == 9)
			{
				SDL_SetColorKey ((*(*sj).image).imgdecor2[6], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[6]->format,255 ,0,255));
				SDL_BlitSurface((*(*sj).image).imgdecor2[6], NULL, ecran, &pos);
			}
			if ((*c).lunite != NULL)
			{
				if ((*(*c).lunite).equipe == 0)
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor2[4], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[4]->format,255 ,0,255));
					SDL_BlitSurface((*(*sj).image).imgdecor2[4], NULL, ecran, &pos);
				}
				else
				{
					SDL_SetColorKey ((*(*sj).image).imgdecor2[5], SDL_SRCCOLORKEY, SDL_MapRGB ((*(*sj).image).imgdecor2[5]->format,255 ,0,255));
					SDL_BlitSurface((*(*sj).image).imgdecor2[5], NULL, ecran, &pos);
				}
			}
		}
	}
}

void AGagner(sdljeu * sj,SDL_Surface * ecran)
{
	int continuer = 1;
	SDL_Event event;
	
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
			case SDL_MOUSEMOTION:
				
			break;
		}
		if ((*(*sj).jeu).tableau_de_joueurs[1].nombre_unites == 0 && (*(*sj).jeu).tableau_de_joueurs[0].nombre_unites > 0)
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 236, 188, 188));
		}
		else if ((*(*sj).jeu).tableau_de_joueurs[0].nombre_unites == 0 && (*(*sj).jeu).tableau_de_joueurs[1].nombre_unites > 0)
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 188, 188 , 236));
		}
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		if ((*(*sj).jeu).tableau_de_joueurs[1].nombre_unites == 0 && (*(*sj).jeu).tableau_de_joueurs[0].nombre_unites > 0)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[4],ecran,300,120);
		}
		else if ((*(*sj).jeu).tableau_de_joueurs[0].nombre_unites == 0 && (*(*sj).jeu).tableau_de_joueurs[1].nombre_unites > 0)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[5],ecran,300,120);
		}
		else
		{
			continuer = 0;
		}
		SDL_Flip(ecran);
	}
	if ((*(*sj).jeu).tableau_de_joueurs[1].nombre_unites == 0 && (*(*sj).jeu).tableau_de_joueurs[0].nombre_unites > 0 && (*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA == 0)
	{
		continuer = VerificationMapFaite((*sj).jeu, "utilisateur/mapfait.txt");
	}
	if (continuer == 1)
	{
		Generiquefin (sj, ecran);
	}
}

void animationDeplacement (sdljeu * sj,SDL_Surface * ecran, int x, int y, int x2, int y2,int * casesdep, int nbcasedep)
{
	int continuer = 1;
	int x3 = x*50;
	int y3 = y*50;
	Terrain * t;
	SDL_Event event;
	const Cases * c;
	t = ObtientTerrainJeu ((*sj).jeu);
	c = ObtientConstCasesTerrain (t,x,y);
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu (sj,ecran,x,y);
		if (x3 < casesdep[nbcasedep]*50)
		{
			x3=x3+5;
		}
		else if (x3 > casesdep[nbcasedep]*50)
		{
			x3=x3-5;
		}
		else if (y3 < casesdep[nbcasedep+1]*50)
		{
			y3=y3+5;
		}
		else if (y3 > casesdep[nbcasedep+1]*50)
		{
			y3=y3-5;
		}
		if ((*(*c).lunite).equipe == 0)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgunite[(*(*c).lunite).type-1], ecran, 200+x3+(*t).scrollx*50, y3+(*t).scrolly*50);
		}
		else
		{
			AffichageImageSdlJeu ((*(*sj).image).imgunite[(*(*c).lunite).type+4], ecran, 200+x3+(*t).scrollx*50, y3+(*t).scrolly*50);
		}
		if (x3 == casesdep[nbcasedep]*50 && y3 == casesdep[nbcasedep+1]*50)
		{
			nbcasedep-=2;
			if (nbcasedep == -2)
			{
				continuer = 0;
			}
		}
		SDL_Flip(ecran);
		
	}
}
void animationCoupeArbre (sdljeu * sj,SDL_Surface * ecran, int x, int y)
{
	int continuer = 1;
	SDL_Event event;
	Terrain * t = NULL;
	Cases * c = NULL;
	int v;
	t = ObtientTerrainJeu ((*sj).jeu);
	c = ObtientCasesTerrain (t,x,y);
	v = (*c).vie-1;
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu (sj,ecran,x,y);
		if (v <= 100 && v > 82)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[10], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50-25);
		}
		else if (v <= 82 && v > 66)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[11], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50-25);
		}
		else if (v <= 66 && v > 50)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[12], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50-25);
		}
		else if (v < 50 && v > 25)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[14], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50-25);
		}
		else if (v <= 25 && v > 0)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[15], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50-25);
		}
		else if (v == 50)
		{
			continuer = 0;
		}
		else if (v == 0)
		{
			continuer = 0;
		}
		v--;
		SDL_Flip(ecran);
		
	}
}

void animationPeche (sdljeu * sj,SDL_Surface * ecran, int x, int y)
{
	int continuer = 1;
	SDL_Event event;
	Terrain * t = NULL;
	int v;
	t = ObtientTerrainJeu ((*sj).jeu);
	v = 30;
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		if (v <= 30 && v > 20)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[16], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50);
		}
		else if (v <= 20 && v > 10)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[17], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50);
		}
		else if (v <= 10 && v > 0)
		{
			AffichageImageSdlJeu ((*(*sj).image).imgdecor[18], ecran, x*50+200+(*t).scrollx*50, y*50+(*t).scrolly*50);
		}
		if (v == 0)
		{
			continuer = 0;
		}
		v--;
		SDL_Flip(ecran);
		
	}
}

void animationCombat(sdljeu * sj,SDL_Surface * ecran, int x, int y, int x2, int y2)
{
	int continuer = 1;
	SDL_Event event;
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	int vie1;
	int vie2;
	int xx = 0;
	int type1;
	int type2;
	int equipe1;
	int retour = 0;
	int equipe2;
	int temps = SDL_GetTicks();
	int tempsprec = SDL_GetTicks();
	int temps2 = SDL_GetTicks();
	int tempsprec2 = SDL_GetTicks();
	
	vie1 = (*(*t).cases[y*(*t).dimx+x].lunite).vie;
	vie2 = (*(*t).cases[y2*(*t).dimx+x2].lunite).vie;
	type1 = (*(*t).cases[y*(*t).dimx+x].lunite).type;
	type2 = (*(*t).cases[y2*(*t).dimx+x2].lunite).type;
	equipe1 =(*(*t).cases[y*(*t).dimx+x].lunite).equipe;
	equipe2 = (*(*t).cases[y2*(*t).dimx+x2].lunite).equipe;
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
		}
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		if (temps != -3)
		{
			if (equipe1 == 0)
			{
				AffichageImageSdlJeu ((*(*sj).image).imgusine[2], ecran, 426-(100-vie1), 61);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgusine[3], ecran, 426-(100-vie2), 61);
			}
			if (equipe2 == 0)
			{
				AffichageImageSdlJeu ((*(*sj).image).imgusine[2], ecran, 683-(100-vie1), 61);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgusine[3], ecran, 683-(100-vie2), 61);
			}
		}
		AffichageImageSdlJeu ((*(*sj).image).imgusine[1], ecran, 300, 50);
		if (temps != -3)
		{
			if (equipe1 == 0)
			{
				AffichageImageSdlJeu ((*(*sj).image).imgunite[10+(type1-1)*2], ecran, 334, 96);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgunite[20+(type1-1)*2+ 1], ecran, 334, 96);
			}
			if (equipe2 == 0)
			{
				AffichageImageSdlJeu ((*(*sj).image).imgunite[10+(type2-1)*2 ], ecran, 618, 96);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgunite[20+(type2-1)*2 + 1], ecran, 618, 96);
			}
		}
		if (temps > 0)
		{
			temps = SDL_GetTicks();
			if (temps - tempsprec > 1000)
			{
				temps = 0;
			}
			AffichageImageSdlJeu ((*(*sj).image).imgusine[4], ecran, 500,175);
		}
		else if (temps == 0)
		{
			retour = ActionUniteCases(&(*t).cases[y*(*t).dimx+x],&(*t).cases[y2*(*t).dimx+x2],2);
			if (retour == 1)
			{					
				ModificationNombreUnites(&(*(*sj).jeu).tableau_de_joueurs[(*(*sj).jeu).tour%2], -1);
				xx = 618;
			}
			else if (retour == 2)
			{
				 ModificationNombreUnites(&(*(*sj).jeu).tableau_de_joueurs[((*(*sj).jeu).tour+1)%2], -1);
				 xx = 334;
			}
			temps = -1;
		}
		else if (temps == -1)
		{
			if (retour == 2)
			{
				if (vie2 > 0)
				{
					vie2 --;
				}
				else 
				{
					temps = -3;
				}
			}
			else
			{
				if (vie2 > (*(*t).cases[y2*(*t).dimx+x2].lunite).vie)
				{
					vie2 --;
				}
				else 
				{
					temps = -2;
				}
			}
		}
		else if (temps == -2)
		{
			if (retour == 1)
			{
				if (vie1 > 0)
				{
					vie1 --;
				}
				else 
				{
					temps = -3;
					
				}
			}
			else
			{
				if (vie1 > (*(*t).cases[y*(*t).dimx+x].lunite).vie)
				{
					vie1 --;
				}
				else 
				{
					continuer = 0;
				}
			}
		}
		else if (temps == -3)
		{
			if (xx != 474)
			{
				if (xx > 474)
				{
					xx = xx-2;
				}
				else
				{
					xx = xx + 2;
				}
				temps2 = SDL_GetTicks();
				tempsprec2 = SDL_GetTicks();
			}
			if (temps2 > 0)
			{
				temps2 = SDL_GetTicks();
				if (temps2 - tempsprec2 > 1000)
				{
					temps2 = 0;
					continuer = 0;
				}
			}
			if (retour == 2)
				{
					if (equipe1 == 0)
					{
						AffichageImageSdlJeu ((*(*sj).image).imgunite[10+(type1-1)*2], ecran, xx, 96);
					}
					else
					{
						AffichageImageSdlJeu ((*(*sj).image).imgunite[20+(type1-1)*2+ 1], ecran, xx, 96);
					}
				}
				else if (retour == 1)
				{
					if (equipe2 == 0)
					{
						AffichageImageSdlJeu ((*(*sj).image).imgunite[10+(type2-1)*2 ], ecran, xx, 96);
					}
					else
					{
						AffichageImageSdlJeu ((*(*sj).image).imgunite[20+(type2-1)*2 + 1], ecran, xx, 96);
					}
				}
		}
		SDL_Flip(ecran);
	}
}

int MenuOption (sdljeu * sj,SDL_Surface * ecran)
{
	int continuer = 1;
	SDL_Event event;
	SDL_Event eventnull;
	int musiques;
	int bruitages;
	int temps = -1;
	int tempsprecedent = -1;
	int choix = 0;
	SDL_Surface * ed = NULL;
    SDL_Surface * musique = NULL;
    SDL_Surface * bruitage = NULL;
    SDL_Surface * reinit = NULL;
    TTF_Font *police = NULL;
    SDL_Color couleurNoire = {0, 0, 0};
    police= TTF_OpenFont("angelina.TTF", 35);
    TTF_SetFontStyle(police, TTF_STYLE_BOLD);
    
    ChargementOption (&musiques,&bruitages,"utilisateur/option.txt");
    
       
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 200 && event.button.x < 500 
					&& event.button.y >= 50 && event.button.y < 100)  
				{
					choix = MenuEditeurMap (sj,ecran);
					if (choix == 1)
					{
						continuer = 0;
					}
				}
				if (event.button.x >= 200 && event.button.x < 600 
					&& event.button.y >= 150 && event.button.y < 200)  
				{
					if (musiques == 1)
					{
						musiques = 0;
					}
					else
					{
						musiques = 1;
					}
					SauvegardeOption (musiques,bruitages, "utilisateur/option.txt");
				}
				if (event.button.x >= 200 && event.button.x < 600 
					&& event.button.y >= 250 && event.button.y < 300)  
				{
					if (bruitages == 1)
					{
						bruitages = 0;
					}
					else
					{
						bruitages = 1;
					}
					SauvegardeOption (musiques,bruitages, "utilisateur/option.txt");
				}
				if (event.button.x >= 600 && event.button.y >= 450)  
				{
					VidageMapFaite("utilisateur/mapfait.txt");
					tempsprecedent = SDL_GetTicks();
					temps = SDL_GetTicks();
				}
				if (event.button.x <=  155 && event.button.y >= 427)  
				{
					continuer = 0;
				}
				event = eventnull;
			break;
			case SDL_MOUSEMOTION:
				
			break;
		}
		ed = TTF_RenderText_Blended(police, "Editeur de map ", couleurNoire);
 	  	if (musiques == 1)
 	   	{
 		   	musique = TTF_RenderText_Blended(police, "Musique du jeu : ON", couleurNoire);
 	   	}
   		else
   	 	{
   	 		musique = TTF_RenderText_Blended(police, "Musique du jeu : OFF", couleurNoire);
    	}
    	if (bruitages == 1)
    	{
    		bruitage = TTF_RenderText_Blended(police, "Bruitage du jeu : ON", couleurNoire);
    	}
    	else
    	{
    		bruitage = TTF_RenderText_Blended(police, "Bruitage du jeu : OFF", couleurNoire);
    	}
		reinit= TTF_RenderText_Blended(police, "Reinitialisation du jeu", couleurNoire);
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[7],ecran,0,0);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[11],ecran,200,150);
		AffichageImageSdlJeu (musique,ecran,275,160);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[12],ecran,200,250);
		AffichageImageSdlJeu (bruitage,ecran,275,260);
		
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[8],ecran,200,50);
		AffichageImageSdlJeu (ed,ecran,275,60);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[9],ecran,600,450);
		AffichageImageSdlJeu (reinit,ecran,675,460);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[10],ecran,0,437);
		if (temps > 0)
		{
			temps = SDL_GetTicks();
			if (temps - tempsprecedent > 2000)
			{
				temps = -1;
			}
			AffichageImageSdlJeu ((*(*sj).image).imgicone[13],ecran,350,440);
		}
		SDL_Flip(ecran);
	}
	SDL_FreeSurface(ed);
	SDL_FreeSurface(musique);
	SDL_FreeSurface(bruitage);
	SDL_FreeSurface(reinit);
	
	return choix;
}

int MenuEditeurMap (sdljeu * sj,SDL_Surface * ecran)
{
	int continuer = 1;
	int choix = 0;
	int joueur = 1;
	float xsouris = 0;
	float ysouris = 0;
	int charge = 0;
	FILE * fic = NULL;
	SDL_Event event;
	SDL_Event eventnull;
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	DestructionTerrain (t);
	InitialisationTerrain (t,16,10);
	fic = fopen("map/mapperso1.txt","r");
	if (fic != NULL)
	{
		ChargementJeu((*sj).jeu, "map/mapperso1.txt");
		charge = 1;
		fclose(fic);
	}
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 140 && event.button.x < 182
					&& event.button.y >=30 && event.button.y < 72)  
				{
					
					fic = fopen("map/mapperso1.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso1.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						InitialisationTerrain (t,16,10);
						charge = 0;
					}
					EditeurMap (sj,ecran,"map/mapperso1.txt");
				}
				else if (event.button.x >= 293 && event.button.x < 335
					&& event.button.y >=30 && event.button.y < 72)  
				{
					fic = fopen("map/mapperso2.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso2.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					EditeurMap (sj,ecran,"map/mapperso2.txt");
				}
				else if (event.button.x >= 140 && event.button.x < 182
					&& event.button.y >=87 && event.button.y < 129)  
				{
					fic = fopen("map/mapperso3.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso3.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					EditeurMap (sj,ecran,"map/mapperso3.txt");
				}
				else if (event.button.x >= 293 && event.button.x < 335
					&& event.button.y >=87 && event.button.y < 129)  
				{
					fic = fopen("map/mapperso4.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso4.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					EditeurMap (sj,ecran,"map/mapperso4.txt");
				}
				else if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >=50 && event.button.y < 100)  
				{
					fic = fopen("map/mapperso1.txt","r");
					if (fic != NULL)
					{
						 ChargementJeu((*sj).jeu, "map/mapperso1.txt");
						 charge = 1;
						 fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					
				}
				else if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 50 && event.button.y < 100)  
				{
					fic = fopen("map/mapperso2.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso2.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					
				}
				else if (event.button.x >= 25 && event.button.x < 170
					&& event.button.y >= 105 && event.button.y < 155)  
				{
					fic = fopen("map/mapperso3.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso3.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					
				}
				else if (event.button.x >= 175 && event.button.x < 320
					&& event.button.y >= 105 && event.button.y < 155)  
				{
					fic = fopen("map/mapperso4.txt","r");
					if (fic != NULL)
					{
						ChargementJeu((*sj).jeu, "map/mapperso4.txt");
						charge = 1;
						fclose(fic);
					}
					else
					{
						DestructionTerrain (t);
						charge = 0;
						InitialisationTerrain (t,16,10);
					}
					
				}
				
				
				if (event.button.x >= 465 && event.button.x < 615
					&& event.button.y >= 430 && event.button.y < 500)  
				{
					continuer = 0;
					choix = 0;
					
				}
				if (event.button.x >= 900 && event.button.x < 1000
					&& event.button.y >= 430 && event.button.y < 500
					&& charge == 1)  
				{
					continuer = 0;
					choix = 1;
					
				}
				
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 323 && event.button.y < 358)  
				{
					joueur = 1;
				}
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 368 && event.button.y < 403)  
				{
					joueur = 2;
				}
				if (event.button.x >= 25 && event.button.x < 60
					&& event.button.y >= 416 && event.button.y < 451)  
				{
					joueur = 3;
				}
				if (joueur == 1)
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 0;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 0;
				}
				else if (joueur == 2)
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 0;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 1;
				}
				else
				{
					(*(*sj).jeu).tableau_de_joueurs[0].joueur_ou_IA = 1;
					(*(*sj).jeu).tableau_de_joueurs[1].joueur_ou_IA = 1;
				}
				(*t).scrollx = 0;
				(*t).scrolly = 0;
				event = eventnull;
			break;
			case SDL_MOUSEMOTION:
				xsouris = event.motion.x;
				ysouris = event.motion.y;
				if(xsouris > 950)
				{
					if (((*t).dimx-16)*40+360+(*t).scrollx*40 > 360)
					{
						(*t).scrollx--;
					}
				}
				if(xsouris >= 360 && xsouris < 410)
				{
					if (360+(*t).scrollx*40 < 360)
					{
						(*t).scrollx++;
					}
				}
				if(ysouris >= 350 && ysouris < 400)
				{
					if (((*t).dimy-10)*40+(*t).scrolly*40 > 0)
					{
						(*t).scrolly--;
					}
				}
				if(ysouris < 50)
				{
					if ((*t).scrolly*40 < 0)
					{
						(*t).scrolly++;
					}
				}
			break;
			break;
		}
		
		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageTerrainSdlJeu2 (sj,ecran);
		
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[13],ecran,0,0);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[14],ecran,140,30);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[14],ecran,293,30);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[14],ecran,140,87);
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[14],ecran,293,87);
		
		
		switch (joueur) 
		{
			case 1 :
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,368);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,416);
			break;

			case 2:
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,368);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,416);	
			break;

			case 3:
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[3],ecran,25,416);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,323);
			AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[2],ecran,25,368);
			break;
		}
		
		
		SDL_Flip(ecran);
	}
	(*t).scrollx = 0;
	(*t).scrolly = 0;
	return choix;
}


void EditeurMap (sdljeu * sj,SDL_Surface * ecran,const char * nomfic)
{
	int continuer = 1;
	int selection = 0;
	int xcurseur= 200;
	float xsouris = 0;
	float ysouris = 0;
	int okbucheron1 = 0;
	int okpecheur1 = 0;
	int okbucheron2 = 0;
	int okpecheur2 = 0;
	int ok = 0;
	int okarbre = 0;
	int okmer = 0;
	int temps = -1;
	int tempsprecedent = -1;
	int i; 
	int j;
	SDL_Event event;
	SDL_Event eventnull;
	int ycurseur=200;
	Terrain * t = ObtientTerrainJeu ((*sj).jeu);
	SDL_Surface * dimx = NULL;
    SDL_Surface * dimy = NULL;
    SDL_Surface * nbjoueur1 = NULL;
    SDL_Surface * nbjoueur2 = NULL;
    SDL_Surface * cotee = SDL_CreateRGBSurface(SDL_HWSURFACE, 200, 500,32,0,0,0,0);
    SDL_Color couleurNoire = {0, 0, 0};
	char rb[100];
	TTF_Font *police = NULL;
	police = TTF_OpenFont("angelina.TTF", 22);
	
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONUP:
				if (selection >= 1 && selection <= 4)
				{
					AjouterDecorEditeurJeu ((*sj).jeu, selection,  xcurseur/50- (*(*(*sj).jeu).lien_sur_terrain).scrollx , ycurseur/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
				}
				else if (selection >= 6 && selection <= 16)
				{
					AjouterUniteEditeurJeu ((*sj).jeu, selection-6, xcurseur/50- (*(*(*sj).jeu).lien_sur_terrain).scrollx , ycurseur/50 - (*(*(*sj).jeu).lien_sur_terrain).scrolly);
				}
				selection = 0;
				
			break;
			case SDL_MOUSEBUTTONDOWN:
				if (event.button.x >= 10 && event.button.x < 60
					&& event.button.y >280 && event.button.y <= 330)  
				{
					selection = 1;
				}
				if (event.button.x >= 75 && event.button.x < 125
					&& event.button.y >280 && event.button.y <= 330)  
				{
					selection = 2;
				}
				if (event.button.x >= 140 && event.button.x < 190
					&& event.button.y >280 && event.button.y <= 330)  
				{
					selection = 3;
				}
				if (event.button.x >= 10 && event.button.x < 60
					&& event.button.y >340 && event.button.y <= 390)  
				{
					selection = 4;
				}
				
				
				
				if (event.button.x >= 10 && event.button.x < 35
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 7;
				}
				if (event.button.x >= 75 && event.button.x < 100
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 8;
				}
				if (event.button.x >= 140 && event.button.x < 165
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 9;
				}
				if (event.button.x >= 10 && event.button.x < 35
					&& event.button.y >220 && event.button.y <= 270)  
				{
					selection = 10;
				}
				if (event.button.x >= 75 && event.button.x < 100
					&& event.button.y >220 && event.button.y <= 270)  
				{
					selection = 11;
				}
				
				if (event.button.x >= 35 && event.button.x < 60
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 12;
				}
				if (event.button.x >= 100 && event.button.x < 125
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 13;
				}
				if (event.button.x >= 165 && event.button.x < 190
					&& event.button.y >160 && event.button.y <= 210)  
				{
					selection = 14;
				}
				if (event.button.x >= 35 && event.button.x < 60
					&& event.button.y >220 && event.button.y <= 270)  
				{
					selection = 15;
				}
				if (event.button.x >= 100 && event.button.x < 125
					&& event.button.y >220 && event.button.y <= 270)  
				{
					selection = 16;
				}
				if (event.button.x >= 140 && event.button.x < 190
					&& event.button.y >220 && event.button.y <= 270)  
				{
					selection = 6;
				}
		
				if (event.button.x >= 10 && event.button.x < 190 
					&& event.button.y >=400 && event.button.y <= 440)  
				{
					okbucheron1 = 0;
					okpecheur1 = 0;
					okbucheron2 = 0;
					okpecheur2 = 0;
					okarbre = 0;
					okmer = 0;
					for (i=0; i< (*t).dimy;  i++)
					{
						for (j = 0; j< (*t).dimx ; j++)
						{
							if ((*t).cases[i*(*t).dimx+j].lunite != NULL)
							{
								if ((*(*t).cases[i*(*t).dimx+j].lunite).type == 1 && (*(*t).cases[i*(*t).dimx+j].lunite).equipe == 0)
								{
									okbucheron1 = 1;
								}
								if ((*(*t).cases[i*(*t).dimx+j].lunite).type == 2 && (*(*t).cases[i*(*t).dimx+j].lunite).equipe == 0)
								{
									okpecheur1 = 1;
								}
								if ((*(*t).cases[i*(*t).dimx+j].lunite).type == 1 && (*(*t).cases[i*(*t).dimx+j].lunite).equipe == 1)
								{
									okbucheron2 = 1;
								}
								if ((*(*t).cases[i*(*t).dimx+j].lunite).type == 2 && (*(*t).cases[i*(*t).dimx+j].lunite).equipe == 1)
								{
									okpecheur2 = 1;
								} 
							}
							if ((*t).cases[i*(*t).dimx+j].type_decor == 1)
							{
								okarbre++;
							}
							if ((*t).cases[i*(*t).dimx+j].type_decor == 2)
							{
								okmer++;
							}
						}
					}
					tempsprecedent = SDL_GetTicks();
					temps = SDL_GetTicks();
					ok = 0;
					if (okbucheron1 + okbucheron2  +okpecheur1 + okpecheur2 == 4 && okarbre > 2 && okmer > 1)
					{
						(*(*sj).jeu).mapencours = 10;
						SauvegardeJeu((*sj).jeu, nomfic);
						ok = 1;
					}
				}
				
				if (event.button.x >= 10 && event.button.x < 190 
					&& event.button.y >=450 && event.button.y <= 490)  
				{
					continuer = 0;
				}
				event = eventnull;
				
			break;
			case SDL_MOUSEMOTION:
				RechercherPositionCurseurSdlJeu  (&xcurseur,&ycurseur,(int)event.motion.x,(int)event.motion.y);
				xsouris = event.motion.x;
				ysouris = event.motion.y;
				if(xsouris > 950)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimx-16)*50+200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 > 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx--;
					}
				}
				if(xsouris >= 200 && xsouris < 250)
				{
					if (200+(*(*(*sj).jeu).lien_sur_terrain).scrollx*50 < 200)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrollx++;
					}
				}
				if(ysouris > 450)
				{
					if (((*(*(*sj).jeu).lien_sur_terrain).dimy-10)*50+(*(*(*sj).jeu).lien_sur_terrain).scrolly*50 > 0)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly--;
					}
				}
				if(ysouris < 50)
				{
					if ((*(*(*sj).jeu).lien_sur_terrain).scrolly*50 < 0)
					{
						(*(*(*sj).jeu).lien_sur_terrain).scrolly++;
					}
				}
			break;
		}
		
		if ((*(*sj).jeu).tour%2 == 0)
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 236, 188, 188));
		}
		else
		{
			SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 188, 188 , 236));
		}
		AffichageTerrainSdlJeu (sj,ecran,-1,-1);
		if ((*(*sj).jeu).tour%2 == 0)
		{
			SDL_FillRect(cotee, NULL, SDL_MapRGB(cotee->format, 236, 188, 188));
		}
		else
		{
			SDL_FillRect(cotee, NULL, SDL_MapRGB(cotee->format, 188, 188 , 236));
		}
		AffichageImageSdlJeu (cotee,ecran,0,0);
		
		sprintf(rb, "dimension x : %d", (*t).dimx);
		dimx = TTF_RenderText_Blended(police, rb, couleurNoire);
		AffichageImageSdlJeu (dimx, ecran,0, 0);
		sprintf(rb, "dimension y : %d", (*t).dimy);
		dimy = TTF_RenderText_Blended(police, rb, couleurNoire);
		AffichageImageSdlJeu (dimy, ecran,0, 25);
		
			
		sprintf(rb, "Nb d'unite joueur1 : %d", (*(*sj).jeu).tableau_de_joueurs[0].nombre_unites);
		nbjoueur1 = TTF_RenderText_Blended(police, rb, couleurNoire);
		AffichageImageSdlJeu (nbjoueur1, ecran,0, 50);
		sprintf(rb, "Nb d'unite joueur2 : %d",(*(*sj).jeu).tableau_de_joueurs[1].nombre_unites);
		nbjoueur2 = TTF_RenderText_Blended(police, rb, couleurNoire);
		AffichageImageSdlJeu (nbjoueur2, ecran,0, 75);
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[4],ecran,10,400);
		AffichageImageSdlJeu ((*(*sj).image).imgicone[7],ecran,10,450);
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[9],ecran,10,280);
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[10],ecran,75,280);
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[11],ecran,140,280);
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgicone[12],ecran,10,340);
		
		
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[0],ecran,25,160);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[1],ecran,90,160);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[2],ecran,155,160);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[3],ecran,25,220);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[4],ecran,90,220);
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[5],ecran,-5,160);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[6],ecran,60,160);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[7],ecran,125,160);
		
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[8],ecran,-5,220);
		
		AffichageImageSdlJeu ((*(*sj).image).imgunite[9],ecran,60,220);

		
		
		switch (selection)
		{
			case 1:
				AffichageImageSdlJeu ((*(*sj).image).imgicone[9],ecran,xsouris-25,ysouris-25);
			break;
			case 2:
				AffichageImageSdlJeu ((*(*sj).image).imgicone[10],ecran,xsouris-25,ysouris-25);
			break;
			case 3:
				AffichageImageSdlJeu ((*(*sj).image).imgicone[11],ecran,xsouris-25,ysouris-25);
			break;
			case 4:
				AffichageImageSdlJeu ((*(*sj).image).imgicone[12],ecran,xsouris-25,ysouris-25);
			break;
			case 7:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[5],ecran,xsouris-25,ysouris-25);
			break;
			case 8:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[6],ecran,xsouris-25,ysouris-25);
			break;
			case 9:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[7],ecran,xsouris-25,ysouris-25);
			break;
			case 10:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[8],ecran,xsouris-25,ysouris-25);
			break;
			case 11:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[9],ecran,xsouris-25,ysouris-25);
			break;
			case 12:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[0],ecran,xsouris-25,ysouris-25);
			break;
			case 13:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[1],ecran,xsouris-25,ysouris-25);
			break;
			case 14:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[2],ecran,xsouris-25,ysouris-25);
			break;
			case 15:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[3],ecran,xsouris-25,ysouris-25);
			break;
			case 16:
				AffichageImageSdlJeu ((*(*sj).image).imgunite[4],ecran,xsouris-25,ysouris-25);
			break;
			
		}
		if (temps > 0)
		{
			temps = SDL_GetTicks();
			if (temps - tempsprecedent > 4000 && ok == 0)
			{
				temps = -1;
			}
			if (temps - tempsprecedent > 2000 && ok == 1)
			{
				temps = -1;
			}
			if (ok == 0)
			{
				AffichageImageSdlJeu ((*(*sj).image).imgicone[15],ecran,250,400);
			}
			else
			{
				AffichageImageSdlJeu ((*(*sj).image).imgicone[14],ecran,350,440);
			}
		}
		AffichageImageSdlJeu ((*(*sj).image).imgcurseur[2], ecran,xcurseur+200, ycurseur);
   		
		SDL_FreeSurface(dimx);
		SDL_FreeSurface(dimy);
		SDL_FreeSurface(nbjoueur1);
		SDL_FreeSurface(nbjoueur2);
		
		SDL_Flip(ecran);
	}
}
void Generiquefin (sdljeu * sj,SDL_Surface * ecran)
{
	int continuer = 1;
	SDL_Event event;
	SDL_Surface * gege = NULL;
	SDL_Surface * gege2 = NULL;
	SDL_Surface * gege3 = NULL;
	SDL_Surface * gege4 = NULL;
    TTF_Font *police = NULL;
    int x = 250;
    int y = 500;
    SDL_Color couleurNoire = {0, 0, 0};
    police= TTF_OpenFont("angelina.TTF", 50);
    TTF_SetFontStyle(police, TTF_STYLE_BOLD);
	while (continuer)
	{
		SDL_PollEvent(&event);
		switch(event.type)
		{
			case SDL_QUIT:
				continuer = 0;
			break;
			case SDL_MOUSEBUTTONDOWN:
				continuer = 0;
			break;
		}
		gege = TTF_RenderText_Blended(police, "LIF7 Game :", couleurNoire);
 	  	gege2 = TTF_RenderText_Blended(police, "Strategic Construction", couleurNoire);
 	   	gege3 = TTF_RenderText_Blended(police, "Justyle, Vegas & PLP", couleurNoire);
 	   	gege4 = TTF_RenderText_Blended(police, "BY", couleurNoire);
 	   	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
		AffichageImageSdlJeu ((*(*sj).image).imgmenuprinc[7],ecran,0,0);
		AffichageImageSdlJeu (gege,ecran,x+100,y);
		AffichageImageSdlJeu (gege2,ecran,x,y+50);
		AffichageImageSdlJeu (gege3,ecran,x,y+150);
		AffichageImageSdlJeu (gege4,ecran,x+200,y+100);
		if (y+200 <= 0)
		{
			continuer = 0;
		}
		y--;
		SDL_Flip(ecran);
	}
	SDL_FreeSurface(gege);
	SDL_FreeSurface(gege2);
	SDL_FreeSurface(gege3);
	SDL_FreeSurface(gege4);
}